home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / html / Map$PolygonRegionContainment.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  1.7 KB  |  78 lines

  1. package javax.swing.text.html;
  2.  
  3. import java.awt.Polygon;
  4. import javax.swing.text.AttributeSet;
  5. import javax.swing.text.html.HTML.Attribute;
  6.  
  7. class Map$PolygonRegionContainment extends Polygon implements Map.RegionContainment {
  8.    float[] percentValues;
  9.    int[] percentIndexs;
  10.    int lastWidth;
  11.    int lastHeight;
  12.  
  13.    public Map$PolygonRegionContainment(AttributeSet var1) {
  14.       int[] var2 = Map.extractCoords(var1.getAttribute(Attribute.COORDS));
  15.       if (var2 != null && var2.length != 0 && var2.length % 2 == 0) {
  16.          int var3 = 0;
  17.          this.lastWidth = this.lastHeight = -1;
  18.  
  19.          for(int var4 = var2.length - 1; var4 >= 0; --var4) {
  20.             if (var2[var4] < 0) {
  21.                ++var3;
  22.             }
  23.          }
  24.  
  25.          if (var3 > 0) {
  26.             this.percentIndexs = new int[var3];
  27.             this.percentValues = new float[var3];
  28.             int var5 = var2.length - 1;
  29.  
  30.             for(int var6 = 0; var5 >= 0; --var5) {
  31.                if (var2[var5] < 0) {
  32.                   this.percentValues[var6] = (float)var2[var5] / -100.0F;
  33.                   this.percentIndexs[var6] = var5;
  34.                   ++var6;
  35.                }
  36.             }
  37.          } else {
  38.             this.percentIndexs = null;
  39.             this.percentValues = null;
  40.          }
  41.  
  42.          super.npoints = var2.length / 2;
  43.          super.xpoints = new int[super.npoints];
  44.          super.ypoints = new int[super.npoints];
  45.  
  46.          for(int var7 = 0; var7 < super.npoints; ++var7) {
  47.             super.xpoints[var7] = var2[var7 + var7];
  48.             super.ypoints[var7] = var2[var7 + var7 + 1];
  49.          }
  50.  
  51.       } else {
  52.          throw new RuntimeException("Unable to parse polygon area");
  53.       }
  54.    }
  55.  
  56.    public boolean contains(int var1, int var2, int var3, int var4) {
  57.       if (this.percentValues != null && (this.lastWidth != var3 || this.lastHeight != var4)) {
  58.          super.bounds = null;
  59.          this.lastWidth = var3;
  60.          this.lastHeight = var4;
  61.          float var5 = (float)var3;
  62.          float var6 = (float)var4;
  63.  
  64.          for(int var7 = this.percentValues.length - 1; var7 >= 0; --var7) {
  65.             if (this.percentIndexs[var7] % 2 == 0) {
  66.                super.xpoints[this.percentIndexs[var7] / 2] = (int)(this.percentValues[var7] * var5);
  67.             } else {
  68.                super.ypoints[this.percentIndexs[var7] / 2] = (int)(this.percentValues[var7] * var6);
  69.             }
  70.          }
  71.  
  72.          return ((Polygon)this).contains(var1, var2);
  73.       } else {
  74.          return ((Polygon)this).contains(var1, var2);
  75.       }
  76.    }
  77. }
  78.